//package com.run_java_test.test2;
//
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.tools.JavaCompiler;
//import javax.tools.JavaFileObject;
//import javax.tools.StandardJavaFileManager;
//import javax.tools.ToolProvider;
//import java.lang.reflect.Method;
//import java.net.URL;
//import java.net.URLClassLoader;
//import java.nio.file.Files;
//import java.nio.file.Path;
//import java.nio.file.Paths;
//
//@RestController
//@RequestMapping("/upload")
//public class JavaFileUploadController {
//
//    @PostMapping("/java")
//    public String uploadJavaFile(@RequestParam("file") MultipartFile file) {
//        try {
//            // 指定E盘目录进行保存
//            Path path = Paths.get("E:/java_files/com/run_java_test/test2/", file.getOriginalFilename());
//
//            // 确保目标目录存在
//            Files.createDirectories(path.getParent());
//
//            // 保存文件
//            file.transferTo(path.toFile());
//
//            // 编译并加载Java文件
//            Class<?> loadedClass = compileAndLoadJavaFile(path);
//
//            // 创建bean实例并调用方法
//            Object beanInstance = createBeanInstance(loadedClass);
//            invokeMethod(beanInstance);
//
//            return "Java file uploaded and executed successfully!";
//        } catch (Exception e) {
//            return "Error: " + e.getMessage();
//        }
//    }
//
//    private Class<?> compileAndLoadJavaFile(Path filePath) throws Exception {
//        // 使用JavaCompiler编译上传的Java文件
//        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
//        StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
//        Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(filePath.toFile());
//
//        // 编译文件
//        JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, null, null, compilationUnits);
//        if (!task.call()) {
//            throw new Exception("Compilation failed.");
//        }
//
//        // 加载类
//        URLClassLoader classLoader = new URLClassLoader(new URL[]{filePath.getParent().toUri().toURL()});
//        String className = getClassNameFromFile(filePath); // 获取文件中的类名
//        return classLoader.loadClass(className);
//    }
//
//    private String getClassNameFromFile(Path filePath) {
//        // 假设Java文件中类名与文件名相同
//        return filePath.getFileName().toString().replace(".java", "");
//    }
//
//    private Object createBeanInstance(Class<?> clazz) throws Exception {
//        // 创建Bean实例
//        return clazz.getDeclaredConstructor().newInstance();
//    }
//
//    private void invokeMethod(Object bean) throws Exception {
//        // 假设我们调用类中的一个无参方法 "execute"
//        Method method = bean.getClass().getMethod("sayHello");
//        method.invoke(bean);
//    }
//}
